#Boa:Dialog:Dialog1

import wx
import wx.calendar
import wx.grid
import datetime

import consultasBD
import utiles
from decimal import Decimal

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)
GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1BUTTON4, wxID_DIALOG1COMBOBOX1, wxID_DIALOG1DATEPICKERCTRL1, 
 wxID_DIALOG1DATEPICKERCTRL2, wxID_DIALOG1GRID1, wxID_DIALOG1STATICTEXT1, 
 wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, 
] = [wx.NewId() for _init_ctrls in range(12)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(94, 29), size=wx.Size(737, 571),
              style=wx.DEFAULT_DIALOG_STYLE,
              title='Listado Compras/Ventas por Grupo')
        self.SetClientSize(wx.Size(729, 544))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='desde', name='staticText1', parent=self, pos=wx.Point(8,
              0), size=wx.Size(29, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='hasta', name='staticText2', parent=self, pos=wx.Point(88,
              0), size=wx.Size(27, 13), style=0)

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self, pos=wx.Point(8, 16),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.datePickerCtrl2 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL2,
              name='datePickerCtrl2', parent=self, pos=wx.Point(88, 16),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='ordenado por...', name='staticText3', parent=self,
              pos=wx.Point(176, 0), size=wx.Size(77, 13), style=0)

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX1,
              name='comboBox1', parent=self, pos=wx.Point(176, 16),
              size=wx.Size(130, 21), style=0, value='')
        self.comboBox1.SetLabel('')
        
        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label='Procesar',
              name='button1', parent=self, pos=wx.Point(312, 16),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnProcesar,
              id=wxID_DIALOG1BUTTON1)

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='Imprimir',
              name='button2', parent=self, pos=wx.Point(392, 16),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_DIALOG1BUTTON2)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Exportar',
              name='button3', parent=self, pos=wx.Point(472, 16),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnExportar,
              id=wxID_DIALOG1BUTTON3)

        self.button4 = wx.Button(id=wxID_DIALOG1BUTTON4, label='Salir',
              name='button4', parent=self, pos=wx.Point(648, 16),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_DIALOG1BUTTON4)

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self, pos=wx.Point(8, 48), size=wx.Size(712, 488),
              style=0)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.cargarCombo()
        self.crearGrilla()
        self.crearTablaProvisoria()

    def OnSalir(self, event):
        self.Close()

    def cargarCombo(self):
        SQL = "SELECT nombre FROM sucursales WHERE 1 ORDER BY idsucursal"
        resultado = consultasBD.ordenCruda(SQL)
        for item in resultado:
            self.comboBox1.AppendItems(item)
        self.comboBox1.Append("Devoluciones")
        self.comboBox1.Append("Total Comprado")
        self.comboBox1.Append("Total Vendido")
        self.comboBox1.SetSelection(len(self.comboBox1.GetItems())-1)
        self.comboBox1.SetEditable(False)
        
    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def crearGrilla(self):
        columnas = ['Grupo','Nombre Grupo','COMPRAS','Devoluciones',
                     'Venta\nCENTRAL','Venta\nPARANA','Venta\nSASKA',
                     'Venta\nPEATONAL','Venta\nTOTAL']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.grid1.Refresh()

        self.ajustarAnchoColumnas()

    def rangoFecha(self):
        fecha1 = self.datePickerCtrl1.GetLabel()
        fecha1 = fecha1.replace("/","-")
        fecha1 = utiles.invertirFecha(fecha1)
        fecha1 = fecha1 + " 00:00:00"
        fecha2 = self.datePickerCtrl2.GetLabel()
        fecha2 = fecha2.replace("/","-")
        fecha2 = utiles.invertirFecha(fecha2)
        fecha2 = fecha2 + " 23:59:59"
        return fecha1,fecha2

    def crearTablaProvisoria(self):
        sql = "DROP TABLE IF EXISTS listadocomprasventasporgrupo"
        consultasBD.ordenCruda(sql)
        print "Creando tablas auxiliares"
        r1 = "CREATE TABLE listadocomprasventasporgrupo (`id` INT(5) NOT NULL AUTO_INCREMENT,"
        r2 = "`idgrupo` INT(4) NOT NULL, "
        r3 = "`nombregrupo` VARCHAR(50) NOT NULL DEFAULT '', "
        r4 = "`compras` INT(5) NOT NULL DEFAULT  '0',"
        r5 = "`devoluciones` INT(5) NOT NULL DEFAULT  '0',"
        r6 = "`central` INT(5) NOT NULL DEFAULT  '0',"
        r7 = "`parana` INT(5) NOT NULL DEFAULT  '0',"
        r8 = "`saska` INT(5) NOT NULL DEFAULT  '0',"
        r9 = "`peatonal` INT(5) NOT NULL DEFAULT  '0', "
        r0 = "PRIMARY KEY (`id`)) ENGINE = INNODB"
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0
        consultasBD.ordenCruda(sql)

    def buscarGruposComprados(self):
        fecha1,fecha2 = self.rangoFecha()
        r1 = "SELECT p.grupo, SUM(cti.cantidad) \n"
        r2 = "FROM compras c, compras_items cti, productos p \n"
        r3 = "WHERE c.fechaingreso BETWEEN '"+fecha1+"' \n"
        r4 = "      AND '"+fecha2+"' \n"
        r5 = "      AND c.idfactura=cti.idfactura \n"
        r6 = "      AND cti.codsussan=p.codsussan \n"
        r7 = "GROUP BY p.grupo "
        sql = r1+r2+r3+r4+r5+r6+r7
        resultado,conecta = consultasBD.ordenCrudaRemota2(sql,0)
        if not conecta:
            print "Sin conexion con el servidor central"
            return 
        for item in resultado:
            idgrupo = str(item[0])
            items = str(item[1])
            r1 = "listadocomprasventasporgrupo(idgrupo,compras)"
            r2 = "('"+idgrupo+"','"+items+"')"
            consultasBD.executaInsertSQL(self,r1,r2)

    def buscarGruposDevueltos(self):
        fecha1,fecha2 = self.rangoFecha()
        r1 = "SELECT p.grupo, SUM(cti.cantidad) \n"
        r2 = "FROM comprasdevoluciones c, comprasdevoluciones_items cti, productos p \n"
        r3 = "WHERE c.fecha BETWEEN '"+fecha1+"' \n"
        r4 = "      AND '"+fecha2+"' \n"
        r5 = "      AND c.idDevolucion=cti.idDevolucion \n"
        r6 = "      AND cti.codsussan=p.codsussan \n"
        r7 = "GROUP BY p.grupo "
        sql = r1+r2+r3+r4+r5+r6+r7
        resultado,conecta = consultasBD.ordenCrudaRemota2(sql,0)
        if not conecta:
            print "Sin conexion con el servidor central"
            return 
        for item in resultado:
            idgrupo = str(item[0])
            items = str(item[1])
            r1 = "listadocomprasventasporgrupo(idgrupo,devoluciones)"
            r2 = "('"+idgrupo+"','"+items+"')"
            consultasBD.executaInsertSQL(self,r1,r2)

    def buscarGruposVendidos(self,sucursal):
        fecha1,fecha2 = self.rangoFecha()
        r1 = "SELECT p.grupo,SUM(vtp.cantidad) AS items \n"
        r2 = "FROM \n"
        r3 = "      ventas v, ventastieneproductos vtp, \n"
        r4 = "      producto_talle_color ptc, productos p \n"
        r5 = "WHERE v.fecha BETWEEN '"+fecha1+"' \n"
        r6 = "      AND '"+fecha2+"' \n" 
        r7 = "      AND v.idventa=vtp.idticket AND vtp.cantidad>0 \n"
        r8 = "      AND vtp.ptc=ptc.id AND ptc.codsussan=p.codsussan \n"
        r9 = "GROUP BY p.grupo "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9
        resultado,conecta = consultasBD.ordenCrudaRemota2(sql,sucursal)
        if not conecta:
            print "Sin conexion con el servidor central"
            return 
        if sucursal == 0: campo = "central"
        elif sucursal == 1: campo = "parana"
        elif sucursal == 2: campo = "saska"
        else: campo = "peatonal"
        for item in resultado:
            idgrupo = str(item[0])
            items = str(item[1])
            r1 = "listadocomprasventasporgrupo(idgrupo,"+campo+")"
            r2 = "('"+idgrupo+"','"+items+"')"
            consultasBD.executaInsertSQL(self,r1,r2)

    def OnLimpiar(self, event):
        self.grid1.ClearGrid()
        for fila in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.crearTablaProvisoria()
        
    def OnProcesar(self, event):
        self.OnLimpiar(None)
        self.buscarGruposComprados()
        self.buscarGruposDevueltos()
        for sucursal in xrange(4):
            #codsucursal,nombre,telefono = utiles.datosSucursal3(str(sucursal+1))
            self.buscarGruposVendidos(sucursal)
        devoluciones = len(self.comboBox1.GetItems())-3
        totalComprado = len(self.comboBox1.GetItems())-2
        totalVendido = len(self.comboBox1.GetItems())-1
        seleccion = self.comboBox1.GetSelection()
        if seleccion == totalVendido:
            ordenado = " ORDER BY total DESC "
        elif seleccion == totalComprado:
            ordenado = " ORDER BY p1.compras DESC "
        elif seleccion == devoluciones:
            ordenado = " ORDER BY p1.devoluciones DESC "
        elif seleccion == 0: # casa central
            ordenado = " ORDER BY p1.c1 DESC "
        elif seleccion == 1: # parana
            ordenado = " ORDER BY p1.c2 DESC "
        elif seleccion == 2: # saska
            ordenado = " ORDER BY p1.c3 DESC "
        else: # peatonal
            ordenado = " ORDER BY p1.c4 DESC "
        r1 = "SELECT p1.idgrupo, p1.nombre, p1.compras, p1.devoluciones, p1.c1, p1.c2, "
        r2 = "       p1.c3, p1.c4, p1.c1 + p1.c2 + p1.c3 + p1.c4 AS total "
        r3 = "FROM (SELECT lc.idgrupo AS idgrupo, g.nombregrupo AS nombre,"
        r4 = "      SUM(lc.compras) AS compras, SUM(lc.devoluciones) AS devoluciones,"
        r5 = "      SUM(lc.central) AS c1, SUM(lc.parana) AS c2, "
        r6 = "      SUM(lc.saska) AS c3, SUM(lc.peatonal) AS c4 "
        r7 = "FROM listadocomprasventasporgrupo lc, grupos g "
        r8 = "WHERE g.idgrupo = lc.idgrupo GROUP BY lc.idgrupo) AS p1 "
        r9 = "WHERE 1 "+ordenado
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9
        resultados = consultasBD.ordenCruda(sql)

        tComprado = 0
        tDevuelto = 0

        total = 0
        tCentral = 0
        tParana = 0
        tSaska = 0
        tPeatonal = 0
        fil = 0
        for fil,item in enumerate(resultados):
            idgrupo = str(item[0])
            nombre = str(item[1])
            compras = str(item[2])
            devoluciones = str(item[3])
            central = str(item[4])
            parana = str(item[5])
            saska = str(item[6])
            peatonal = str(item[7])
            
            tComprado+= item[2]
            tDevuelto+= item[3]
            subtotal = item[4]+item[5]+item[6]+item[7]
            total+= subtotal
            tCentral+= item[4]
            tParana+= item[5]
            tSaska+= item[6]
            tPeatonal+= item[7]

            self.grid1.SetCellValue(fil,0,idgrupo)
            self.grid1.SetCellValue(fil,1,nombre)
            self.grid1.SetCellValue(fil,2,compras)
            self.grid1.SetCellValue(fil,3,devoluciones)
            self.grid1.SetCellValue(fil,4,central)
            self.grid1.SetCellValue(fil,5,parana)
            self.grid1.SetCellValue(fil,6,saska)
            self.grid1.SetCellValue(fil,7,peatonal)
            self.grid1.SetCellValue(fil,8,str(subtotal))
            
            self.grid1.SetCellAlignment(fil,2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            
            self.grid1.AppendRows()
        
        if fil != 0: fil = fil + 1

        self.grid1.SetCellValue(fil,2,"Compras")
        self.grid1.SetCellValue(fil,3,"Dev")
        self.grid1.SetCellValue(fil,4,"Central")
        self.grid1.SetCellValue(fil,5,"Parana")
        self.grid1.SetCellValue(fil,6,"Saska")
        self.grid1.SetCellValue(fil,7,"Peatonal")
        self.grid1.SetCellValue(fil,8,"Total")

        self.grid1.SetCellAlignment(fil,2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

        self.grid1.AppendRows()
        fil = fil + 1

        self.grid1.SetCellValue(fil,2,str(tComprado))
        self.grid1.SetCellValue(fil,3,str(tDevuelto))
        self.grid1.SetCellValue(fil,4,str(tCentral))
        self.grid1.SetCellValue(fil,5,str(tParana))
        self.grid1.SetCellValue(fil,6,str(tSaska))
        self.grid1.SetCellValue(fil,7,str(tPeatonal))
        self.grid1.SetCellValue(fil,8,str(total))

        self.grid1.SetCellAlignment(fil,2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

        self.ajustarAnchoColumnas()

    def OnImprimir(self, event):
        print "Imprimir"

        f=open("c:\\erpsussan.doc\\reporte-ListadoVentasPorGrupo.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 39
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            fecha1,fecha2 = self.rangoFecha()
            fecha1 = fecha1[:10]
            fecha1 = utiles.invertirFecha2(fecha1)
            fecha2 = fecha2[:10]
            fecha2 = utiles.invertirFecha2(fecha2)

            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="center" align="left" width="33%">'
            a+= 'SUSSAN BOUTIQUE<br><font size="0.02">Listado Compras/Ventas por Grupo</font>'
            a+= '</td>\n<td valign="center" align="left" width="34%">'
            a+= 'desde '+fecha1+'<br>hasta '+fecha2
            a+= '</td>\n'
            a+= '<td valign="center" align="right" width="33%">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td>\n'
            a+= '</tr>\n'
            a+= '</table>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
        #idgrupo,nombre,compras,central,parana,saska,peatonal,total
        #0       1      2       3       4      5     6        7
            a = '<hr>'

            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right">Orden</td> \n'
            a+= '<td valign="top" align="left">Grupo</td> \n'
            a+= '<td valign="top" align="right">Compras</td> \n'
            a+= '<td valign="top" align="right">DEV</td> \n'
            a+= '<td valign="top" align="right">Ventas\nCentral</td> \n'
            a+= '<td valign="top" align="right">Ventas\nParana</td> \n'
            a+= '<td valign="top" align="right">Ventas\nSaska</td> \n'
            a+= '<td valign="top" align="right">Ventas\nPeatonal</td> \n'
            a+= '<td valign="top" align="right">Total\nVendido</td> \n'
            a+= '</tr> \n'
#            a+= '</table>\n'
            a+= '<tr>\n'
            a+= '<td colspan="9"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        renglon = 0
        orden = 0
        for i in xrange(self.grid1.GetNumberRows()):
        #idgrupo,nombre,compras,devolucion,central,parana,saska,peatonal,total
        #0       1      2       3          4       5      6     7        8
            orden+= 1
            grupo = self.grid1.GetCellValue(i,1)[:20]+"/"+self.grid1.GetCellValue(i,0)
            compras = self.grid1.GetCellValue(i,2)
            devolucion = self.grid1.GetCellValue(i,3)
            central = self.grid1.GetCellValue(i,4)
            parana = self.grid1.GetCellValue(i,5)
            saska = self.grid1.GetCellValue(i,6)
            peatonal = self.grid1.GetCellValue(i,7)
            total = self.grid1.GetCellValue(i,8)
            
            taman="1.5"
            cadena = '<tr> \n'
            if grupo != "/":
                cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+str(orden)+'</font></td> \n'
                cadena+= '<td valign="center" align="left"><font size="'+taman+'">'+grupo+'</font></td> \n'
            else:
                cadena+= '<td valign="center" align="right"></td> \n'
                cadena+= '<td valign="center" align="left"></td> \n'
                orden-= 1
            taman="2"
            cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+compras+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+devolucion+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+central+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+parana+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+saska+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+peatonal+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="'+taman+'">'+total+'</font></td> \n'
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")                
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        tama = '"1"'
            
        cadena = '</table>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\erpsussan.doc\\reporte-ListadoVentasPorGrupo.html")

    def OnExportar(self, event):
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        fecha = fecha.replace("-","")
        fecha = fecha.replace(" ","")
        fecha = fecha.replace(":","")
        dir = "c:\\erpsussan.doc\\"
        archivo = "comprasventasPorGrupo-"+fecha+".cvs"
        nombre = dir+archivo
        f = open(nombre,"w")
        f.write("Grupo;Nombre Grupo;COMPRAS;DEV;Central;Parana;Saska;Peatonal;Total Vendido\n")
        for fil in xrange(self.grid1.GetNumberRows()):
            cadena = ""
            for col in xrange(self.grid1.GetNumberCols()):
                cadena+= self.grid1.GetCellValue(fil,col)+";"
            f.write(cadena[:-1]+"\n")
        f.close()
        utiles.mensaje(None,"Exportado en "+dir+"\nen el archivo de nombre\n"+archivo)
